// src/stores/interaction.js
import { defineStore } from 'pinia'
import { ref } from 'vue'
import { getMyCommentCountAPI, getMyFollowerCountAPI, getMyLikeCountAPI, getMyAtCommentCountAPI } from '@/api/interaction'

export const useInteractionStore = defineStore('interaction', () => {
  // 这是评论数
  const commentCount = ref(0)
  // 这是点赞数
  const likeCount = ref(0)
  // 这是关注数
  const followerCount = ref(0)
  // 这是@我的评论数
  const atCommentCount = ref(0)
  // 请求评论
  const fetchCommentCount = async (userId) => {
    try {
      const res = await getMyCommentCountAPI(userId)
      commentCount.value = res.data || 0
    } catch (error) {
      console.error('获取评论数失败:', error)
    }
  }
  // 请求关注
  const fetchFollowerCount = async (userId) => {
    try {
      const res = await getMyFollowerCountAPI(userId)
      console.log('获取关注数成功:', res)
      followerCount.value = res.data || 0
    } catch (error) {
      console.error('获取关注数失败:', error)
    }
  }
  // 请求点赞
  const fetchLikeCount = async (userId) => {
    try {
      const res = await getMyLikeCountAPI(userId)
      console.log('获取点赞数成功:', res)
      likeCount.value = res.data || 0
    } catch (error) {
      console.error('获取点赞数失败:', error)
    }
  }
  // 请求@我的
  const fetchAtCommentCount = async (userId) => {
    try {
      const res = await getMyAtCommentCountAPI(userId)
      console.log('获取@我的评论数成功:', res)
      atCommentCount.value = res.data || 0
    } catch (error) {
      console.error('获取@我的评论数失败:', error)
      atCommentCount.value = 0
    }
  }
  // 重置评论数
  const resetCommentCount = () => {
    commentCount.value = 0
  }
  // 重置关注数
  const resetFollowerCount = () => {
    followerCount.value = 0
  }
  // 重置点赞数
  const resetLikeCount = () => {
    likeCount.value = 0
  }
  // 重置@我的评论数
  const resetAtCommentCount = () => {
    atCommentCount.value = 0
  }


  // 返回需要暴露的状态和方法（Pinia 自动收集）
  return {
    commentCount,
    likeCount,
    followerCount,
    fetchCommentCount,
    fetchFollowerCount,
    fetchLikeCount,
    resetCommentCount,
    resetFollowerCount,
    resetLikeCount,
    fetchAtCommentCount,
    resetAtCommentCount,
    atCommentCount
  }
}, {
  // 启用持久化（使用 pinia-plugin-persistedstate）
  persist: {
    key: 'interaction-store', // 可选，默认为 store id
    storage: localStorage,    // 默认就是 localStorage，可省略
    // 可选：只持久化部分字段
    paths: ['commentCount', 'likeCount', 'followerCount', 'atCommentCount']
  }
})